package com.yociyy.admin.controller;

import com.github.pagehelper.PageHelper;
import com.yociyy.admin.biz.BaseDictDataBiz;
import com.yociyy.admin.model.entity.BaseDictData;
import com.yociyy.common.core.msg.R;
import com.yociyy.common.core.msg.TableR;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 字典数据
 * 
 * @author Y.yang
 * @date 2020/5/21
 */
@RestController
@RequestMapping("dict/data")
public class BaseDictDataController {

	@Autowired
	private BaseDictDataBiz baseDictDataBiz;

	/**
	 * 查询字典数据
	 */
	@GetMapping("/{id}")
	public BaseDictData get(@PathVariable("id") Long id) {
		return baseDictDataBiz.selectDictDataById(id);
	}

	/**
	 * 查询字典数据分页列表
	 *
	 * @param params 查询条件
	 * @return 字典数据列表
	 */
	@GetMapping("page")
	public TableR page(@RequestParam Map<String, Object> params) {
		PageHelper.startPage(params);
		return new TableR(baseDictDataBiz.selectPage(params));
	}

	/**
	 * 新增字段数据
	 *
	 * @param baseDictData 字段数据信息
	 * @return 结果
	 */
	@PostMapping
	public R addDictData(@RequestBody BaseDictData baseDictData) {
		return R.success(baseDictDataBiz.insertDictData(baseDictData));
	}

	/**
	 * 修改字典数据
	 *
	 * @param baseDictData 字典数据信息
	 * @return 结果
	 */
	@PutMapping
	public R putDictData(@RequestBody BaseDictData baseDictData) {
		return R.success(baseDictDataBiz.updateDictData(baseDictData));
	}

	/**
	 * 删除字典数据
	 */
	@DeleteMapping
	public R delDictData(String ids) {
		return R.success(baseDictDataBiz.deleteDictDataByIds(ids));
	}

	/**
	 * 根据字典类型查询字典数据信息
	 * 
	 * @param dictType 字典类型
	 * @return 参数键值
	 */
	@GetMapping("type")
	public List<BaseDictData> getType(String dictType) {
		return baseDictDataBiz.selectDictDataByType(dictType);
	}

	/**
	 * 根据字典类型和字典键值查询字典数据信息
	 * 
	 * @param dictType 字典类型
	 * @param dictValue 字典键值
	 * @return 字典标签
	 */
	@GetMapping("label")
	public String getLabel(String dictType, String dictValue) {
		return baseDictDataBiz.selectDictLabel(dictType, dictValue);
	}

}
